// Header Protection
#ifndef _DEFINITIONS_H_
#define _DEFINITIONS_H_

// Namespace
namespace IE
{
	// Standard Integer Types
	typedef __int32          int_t;
	typedef unsigned __int32 uint_t;

	// Specific Size Integer Types
	typedef __int8           int8_t;
	typedef __int16          int16_t;
	typedef __int32          int32_t;
	typedef __int64          int64_t;
	typedef unsigned __int8  uint8_t;
	typedef unsigned __int16 uint16_t;
	typedef unsigned __int32 uint32_t;
	typedef unsigned __int64 uint64_t;

	// Standard Floating Point Type
	typedef float            float_t;

	// Specific Size Floating Point Types
	typedef float            float32_t;
	typedef double           float64_t;

	// Boolean Type
	typedef bool             bool_t;

	// Character Type
	typedef wchar_t          char_t;

	// Byte Types
	typedef unsigned __int8  byte_t;
	typedef unsigned __int16 word_t;
	typedef unsigned __int32 dword_t;
	typedef unsigned __int64 qword_t;

	// Constants
	#define FALSE    0
	#define TRUE     1
	#define NULL     0
	#define PI       3.1415926535897932384
	#define PI_DIV_2 1.5707963267948966192
}

// Reference Types
#include "..\..\Types\String.h"
#include "..\..\Types\Flag.h"
#include "..\..\Types\List.h"
#include "..\..\Types\Stack.h"
#include "..\..\Types\Vector.h"
#include "..\..\Types\Matrix.h"
#include "..\..\Types\Plane.h"
#include "..\..\Types\Frustum.h"
#include "..\..\Types\Mutex.h"
#include "..\..\Types\Stopwatch.h"
#include "..\..\Types\File.h"

// Header Protection
#endif // _DEFINITIONS_H_
